A data warehouse is a relational database that is designed for query and analysis rather than for transaction processing. It usually contains historical data derived from transaction data, but it can include data from other sources. It may separate analysis workload from transaction workload and enable an organization to consolidate data from several sources. In addition to a relational database, a data warehouse environment generally includes back end extraction, transportation, transformation, and loading (ETL) solutions, online analytical processing (OLAP) engines, client analysis tools, and other applications that manage the process of gathering data and delivering it to business users.
Front-end and back-end are terms which refer to the separation of concerns between a presentation layer and a data access layer, respectively, and wherein the data warehouse resides in the back end. The front end is an interface between the user and the back end. The front end is an abstraction layer that simplifies an underlying component by providing a user-friendly interface. Back end code typically resides on a data warehouse server, wherein a back-end application or program serves indirectly in support of the front-end services, to provide access to the data warehouse.
Front end abstraction layers may utilize a variety of different programming language and environment approaches in engaging the back end, and examples include Extensible Markup Language (XML), JavaScript Object Notation (JSON) and Structured Query Language (SQL) environments. XML is a markup language that defines a set of rules for encoding documents presented in the front end in a format which is both human-readable and machine-readable. XML is a textual data format with strong support via unicode for different human languages. Although the design of XML focuses on documents, it is widely used for the representation of arbitrary data structures such as those used in web services. Several schema systems exist to aid in the definition of XML-based languages, while many application programming interfaces (APIs) have been developed to aid the processing of XML data.
JavaScript Object Notation (JSON) is a language-independent data format that uses human-readable text to transmit data objects consisting of attribute-value pairs. It is often used to transmit data between a server and a web application, including as an alternative to XML.
Structured Query Language (SQL) is a special-purpose programming language generally designed for managing data held in a relational database management system (RDBMS), or for stream processing in a relational data stream management system (RDSMS), and consists of a data definition language and a data manipulation language.